home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
c
/
datelib.exe
/
MKTIMSTR.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-27
|
5KB
|
155 lines
static char mk_timestr_prog[] = "@(#)Zeit-String aus Sekunden oder Minuten bauen";
static char mk_timestr_ver[] = "@(#)v1.00/kr ; 10.06.91";
/* Autor Klaus Rath
**
** Deklaration char *mk_timestr(unsigned long min_sec, int toggle, int format);
**
** Übergabe Die Funktion erwartet einen UNSIGNED LONG-Wert min_sec, der
** entweder als Sekunden- oder als Minutenzahl interpretiert, je
** nach Setzung des Schalter-INT-Wertes toggle. Außerdem wird ein
** INT-Wert erwartet, der festlegt, in welchem Format der
** Zeitstring zurückgegeben werden soll.
** ( erlaubte Formate: siehe util.h ! )
**
** Rückgabe Es wird ein Zeiger auf ein CHAR-Array zurückgegeben, das von
** der aufrufenden Funktion per strcpy() in ein ausreichend
** dimensioniertes Array kopiert werden kann.
**
** Anmerkungen Die Funktion implementiert außerdem ein Format TI_MIN_SEC, das
** es erlaubt, den Wertebereich von min_sec ( LONG ! ) voll aus-
** zu nutzen. Es werden dann zusätzlich Tage vorangestellt.
** Mit der Schalterstellung 's' für Sekunden lassen sich damit
** 49,710 Tage ( entsprechend 136 Jahre) darstellen.
** Mit 'm' für Minuten vergrößert sich der Bereich auf ca.
** 2,982,600 Tage ( entsprechend 8000 Jahre ).
**
** Änderungen 1.00 ; 10.06.91
** - Erste Version
*/
#include <stdio.h>
#include <string.h>
#ifdef __TURBOC__
#define ANSI
#define MSDOS
#include <stdlib.h>
#endif
#include "datum.h"
#ifdef ANSI
char *mk_timestr(unsigned long min_sec, int toggle, int format)
#else
char *mk_timestr(min_sec, toggle, format)
unsigned long min_sec;
int toggle;
int format;
#endif
{
/* Variablen definieren :
*/
char zeit[30];
char tage_s[10];
char stunden_s[3];
char minuten_s[3];
char sekunden_s[3];
long tage,stunden,minuten,sekunden;
/* Initialisieren :
*/
zeit[0] =
tage_s[0] = stunden_s[0] = minuten_s[0] = sekunden_s[0] = '\0';
tage = stunden = minuten = sekunden = 0L;
/* Übernommenen Wert zerlegen :
** ----------------------------
*/
if ( toggle == 's' ) { /* Übernahme von Sekunden */
while ( min_sec > 86400 ) {
tage++;
min_sec -=86400;
}
while ( min_sec > 3600 ) {
stunden++;
min_sec -= 3600;
}
while ( min_sec > 60 ) {
minuten++;
min_sec -= 60;
}
sekunden = min_sec;
} /* if(toggle=='s') */
else if ( toggle == 'm' ) { /* Übernahme von Minuten */
while ( min_sec > 1440 ) {
tage++;
min_sec -= 1440;
}
while ( min_sec > 60 ) {
stunden++;
min_sec -= 60;
}
minuten = min_sec;
}
else /* Nicht implementiert : Fehler */
return(NULL);
/* ENDE: Zerlegung */
/* Umkopieren in Strings :
** -----------------------
*/
sprintf(tage_s, "%ld",tage);
sprintf(stunden_s, "%02d",stunden);
sprintf(minuten_s, "%02d",minuten);
sprintf(sekunden_s, "%02d",sekunden);
switch ( format ) {
case TI_HM_D :
strcpy(zeit,stunden_s);
strcat(zeit,":");
strcat(zeit,minuten_s);
break;
case TI_HMS_D :
strcpy(zeit,stunden_s);
strcat(zeit,":");
strcat(zeit,minuten_s);
strcat(zeit,":");
strcat(zeit,sekunden_s);
break;
case TI_HM_P :
strcpy(zeit,stunden_s);
strcat(zeit,".");
strcat(zeit,minuten_s);
break;
case TI_HMS_P :
strcpy(zeit,stunden_s);
strcat(zeit,".");
strcat(zeit,minuten_s);
strcat(zeit,".");
strcat(zeit,sekunden_s);
break;
case TI_HM_DB :
strcpy(zeit,stunden_s);
strcat(zeit,minuten_s);
break;
case TI_HMS_DB :
strcpy(zeit,stunden_s);
strcat(zeit,minuten_s);
strcat(zeit,sekunden_s);
break;
case TI_MIN_SEC:
strcpy(zeit,tage_s);
strcat(zeit,":");
strcat(zeit,stunden_s);
strcat(zeit,":");
strcat(zeit,minuten_s);
strcat(zeit,":");
strcat(zeit,sekunden_s);
break;
default: return((char *)NULL);
} /* ENDE: switch(format) */
return(zeit);
} /* ENDE: mk_timestr() */